package com.cehome.cloudbox.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cehome.cloudbox.doman.dto.ProcAssignDto;
import com.cehome.cloudbox.doman.dto.ProcStateDto;
import com.cehome.cloudbox.doman.dto.ProcTaskHandleDto;
import com.cehome.cloudbox.doman.dto.ProcTaskPageShowVo;
import com.cehome.cloudbox.doman.vo.ProcTaskPageQueryVo;


/**
 * <p>
 * 任务 服务类
 * </p>
 */
public interface IProcTaskService {

    /**
     * 流程审批同意
     *
     * @param param 流程任务处理DTO
     * @return 流程状态DTO
     */
    ProcStateDto agree(ProcTaskHandleDto param);

    /**
     * 流程审批拒绝
     *
     * @param param 流程任务处理DTO
     * @return 流程状态DTO
     */
    ProcStateDto refuse(ProcTaskHandleDto param);

    /**
     * 流程转办
     *
     * @param param 流程转办DTO
     * @return 流程状态DTO
     */
    ProcStateDto assign(ProcAssignDto param);

    /**
     * 流程驳回并结束
     *
     * @param param 流程驳回并结束DTO
     * @return 流程驳回并结束DTO
     */
    ProcStateDto rejectAndTermination(ProcTaskHandleDto param);

    /**
     * 待办任务列表
     *
     * @param param 流程任务分页查询VO
     * @return 待办分页列表
     */
    Page<ProcTaskPageShowVo> todoList(ProcTaskPageQueryVo param, Boolean isPage);

    /**
     * 已办任务列表
     *
     * @param param 流程任务分页查询VO
     * @return 已办任务列表
     */
    Page<ProcTaskPageShowVo> doneList(ProcTaskPageQueryVo param);

}
